package com.sikaryofficial.workbench.utils;

import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

/**
 * jxls模版渲染
 * https://jxls.sourceforge.net/getting-started.html
 * 最新版本的要求jdk17，所以暂时不用了。但是excel 模板的语法还是沿用之前的语法。
 */
public class JxlsUtils {

    /**
     * 渲染模版
     *
     * @param templateName 模版文件名。从classpath:/templates/路径下查找
     * @param params       渲染参数
     * @return 渲染结果
     * @throws IOException
     */
    public static byte[] processTemplate(String templateName, Map<String, Object> params) throws IOException {
        try (InputStream inputStream = JxlsUtils.class.getClassLoader()
                .getResourceAsStream("templates/" + templateName)) {
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            Context context = new Context(params);
            JxlsHelper.getInstance()
                    .processTemplate(inputStream, outputStream, context);
            return outputStream.toByteArray();
        }
    }


}
